#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: ar
#	Author		：hpy
#	Date		：2020年10月09日
#	Description	：自动查找最近1分钟时间内修改的文件并运行
#-------------------------------------------------------
lfilename=$(readlink -f $0)
#找出最近一分钟修改的文件
function AutoRun(){
    src=$(find . -type f -mmin 1  | xargs ls -ta | head -n +1)
    echo $src 
    if [ ${#src} -eq 0 ] ; then
        echo "没有检测到最近修改的文件"
        exit 2
    fi 
    filename=$(readlink -f $src)
    if [[ $filename = $lfilename ]] ; then
        echo "不支持自举运行"
        exit 2
    fi 
    
    #当修改文件是 run ，run.sh , run.fish 则直接执行修改的文件
    filename=$(basename $src) 
    pathdir=$(dirname $src)
    if [[ "$filename" == "run" ]] ||  [[ "$filename" == "run.sh" ]] ||  [[ "$filename" == "run.fish" ]]
    then 
        cd $pathdir
        chmod +x $filename 
        ./$filename $* 
        exit 0
    fi 

    #当修改文件不是 run，run.sh, run.fish是则执行以下的部分
    cd $pathdir
    if [ -f run ] ; then 
        chmod +x run
        ./run $*
        exit 0
    elif [ -f run.sh ] ;then 
        chmod +x run.sh
        ./run.sh $*
        exit 0
    elif [ -f run.fish ] ;then
        chmod +x run.fish
        ./run.fish $*
        exit 0
    else 
        src=$(basename $src)
        ReadFileType $src
    fi 
    
}

function ReadFileType(){
    local dst="$(date +%Y%m%d%H%M%S).log"
    case $1 in
        *.sh | *.fish | *.pl | *.tcl | *.tk | *.py | *.lua)  chmod +x $1 && ./$1 ;;
        *.c) gcc -o $dst $1 && chmod +x $dst && ./$dst;;
        *.cpp) g++ -std=c++11 -o $dst $1 && chmod +x $dst && ./$dst;;
        *.go ) go build -o $dst $1 && chmod +x $dst &&  ./$dst ;;
        *.plt) gnuplot $1 ;;   #gnuplot
        * ) echo "Fuck! I don't konw what it is!" ;;
    esac
    test -f $dst && rm $dst &>/dev/null
    exit 0
}

AutoRun


